1.1 ios开发前准备
1.1 苹果公司介绍
重要事件
1976年创立
1976年推出Apple 1
1977年推出Apple 2
1980年推出Apple 3
1983年推出Apple Lisa
1984年推出Macintosh
1991年推出PowerBook,2006年被MacBook系列取代
1993年推出Apple Newton掌上电脑(已死)苹果电脑
1998年推出iMac
2005年推出Mac mini
2006年推出Mac Pro
2006年推出MacBook(已死)
2008年推出MacBook air苹果音乐播放器
2001年推出ipod
2004年推出iPod Mini
2005年推出iPod nano、iPod Shuffle
2007年推出iPod Classic、iPod Touch苹果手机产品
2007年推出iPhone
2008年推出iPhone 3G
2009年推出iPhone 3GS
2010年推出iPhone 4
2011年推出iPhone 4s
2012年推出iPhone 5
2013年推出iPhone 5s、iPhone 5c苹果公司平板电脑
2010年推出iPad
2011年推出iPad2
2012年推出iPad Mini苹果电视
2006年发布Apple TV
1.1.2 苹果Mac OX 操作系统介绍
历史版本
2001年从Macintosh电脑上分离出来成为OS X10.0
2001年推出OS X 10.1
2002年推出OS X 10.2、10.3
2005年推出OS X 10.4
2006年推出OS X 10.5
2008年推出OS X 10.6
2010年推出OS X 10.7(App Store)
2012年推出OS X 10.8
2013年推出OS X 10.9(后台程序省电优化、内存压缩技术)
2014年推出OS X 10.10OS X系统结构
1.1.3 苹果ios操作系统
历史版本
2007年发布iPhone Runs OS X
2008年改名为iPhone OS
2010年改名为ios,发布ios4(多任务)
2011年发布ios5
2012年发布ios6
2013年发布ios7(扁平化)
2014年发布ios8ios系统结构
1.1.4 软硬件开发环境要求
硬件环境
CPU双核
内存8G
最好选择Macbook Pro,也可以使用Macbook Air
测试手机iPhone 5+(发布)环境要求
OS X 10.9.3+
Xcode 6.0+
1.2 Xcode继承开发环境的安装使用与项目建立流程
1.2.1 xcode的下载和安装
说明:两种方式
- AppStore
- 开发者中心下载链接:https://developer.apple.com/xcode/downloads
1.2.2 xcode创建ios single view项目
1.2.3 工作空间创建和使用
1.2.4 xcode快捷键及常用功能
常用
| 快捷键 | 说明 |
|---|---|
| option + cmd + 向上箭头 | m/h文件切换 |
| ctrl + a | 光标移动到行头 |
| ctrl + e | 光标移动到行末 |
| command + G | 查找下一个 |
| command + w | 关闭一个文件 |
| option + command + m | 窗口最小化 |
| command + / | 注释 |
调试
| 快捷键 | 说明 |
|---|---|
| alt + command + y | degug 调试 |
| alt + command + R | Run运行 |
| alt + command + p | 到下一个断点 |
| shift + cmd + o | 执行下一步(step over) |
| shift + cmd + i | 执行进入函数(step into) |
| shift + cmd + t | step out |
| command + / | 取消断点 |
| command + shift + F | 查找 |
| command + enter | 等于bulid and debug |
移动
| 快捷键 | 说明 |
|---|---|
| control+F | 在同一行上将光标向右移动 |
| control+B | 在同一行上将光标向左移动 |
| control+P | 将光标移动到前一行 |
| control+N | 将光标移动到后一行 |
| control+A | 将光标移动到本行的行首 |
| control+N | 将光标移动到本行的行尾 |
| control+T | 将光标两边的字符对调 |
| control+D | 删除光标右边的字符 |
| control+k 删除光标所在行 光标后面的代码,便于你重写行尾代码 | |
| control + L | 将光标插点置于窗口正中 |
缩进
- 第一种方法:选中需要缩进的代码,按住control键后单击光标,出现pop菜单,然后选择Re-indent selection。
- 第二种方法:选择需要调整的代码,同时按下
command+[ (左移动代码)或command+](右移动代码)。
1.2.5 xcode中创建os x命令行控制台项目
1.2.6 xcode中创建os x窗体程序项目
1.2.7 xcode中创建os x游戏项目
1.2.8 xcode中创建ios游戏项目
1.3 Xcode常用项目模版
说明:
5种
- Master-Detail Application:
列表页-详情页类型- Page-Based Application:
电子书类型- Single View Application:
- Tabbed Application
- Game
1.3.1 Master-Detail Application

1.3.2 Page-Based Application

1.3.3 Tabbed Application

1.4 ios用户界面开发基本流程
1.4.1 StoryBoard的基本使用方法
说明:
Storybiard(故事版)是Xcode4.2才开始支持的,为了使设计View更加容易。
- 可以在
Info.plist文件中设置应用启动时首次加载的storyboard
- 一个应用中可以有多个
storyboard
storyboard中指出了首先会被加载的view
- 查看视图控制器绑定的类

- 在多个视图之间建立动作关联

1.4.2 图片控件
说明:在
xcode中图片控件的创建和使用
- 将本地的图片拖入到项目中

- 创建
Image View
1.4.3 ios UI界面设计中传统方法和Assistant editor绑定代码
说明:
程序和控件的绑定,有两种方式
方式1:ios UI界面设计中传统方法
说明:步骤如下
- 在
Controller中定义@IBOutlet修饰的引用控件的属性- 通过拖动建立
@IBOutlet引用的控件和属性所在类文件之间的关联- 在
Controller中通过@IBOutlet属性使用控件
方式2:借助Assistant editor绑定代码
说明:步骤如下
- 打开辅助窗口
- 拖线
- 设置关联
- connect
1.4.4 ios Story Board控制事件绑定
说明:步骤如下
- 编写
@IBAction- 在
storyboard中通过拖动在控件与controller中相应的IBAction之间建立关联
1 | import UIKit |
1.4.5 iOS Storyboard控件与Swift类绑定
说明:新添加的
Storyboard控件默认并没有和自定义的类绑定,和自定义的类绑定就可以通过代码自定义该控件
- 设置绑定的类的类名
- 对应的自定义类中要实现父类的必要构造器(如果有的话)
1 | import UIKit |
1.4.6 ios源代码添加控件
1 | import UIKit |
1.4.7 ios浏览器开发制作
说明:需要解决
http请求受限的问题


1.5 ios自定义控件实例
1.5.1 配置iOS自定义控件属性
说明:
Xcode提供的所有控件都可以在Storyboard中进行一系列的配置。

1.5.2 自定义原型进度指示控件实例
说明:使用绘图
API编写自定义一个进度条控件
ProgressBar.swift
1 | import UIKit |
ViewController.swift
1 | import UIKit |
1.5.3 实时预览自定义控件效果
说明:
自定义控件也可以使用Storyboard设置。步骤如下
意义:开发人员通过代码开发的自定义控件,也可以交给设计人员通过Storyboard进行设计了
相关指令:用来和Storyboard建立关联
| 指令 | 修饰目标 | 说明 |
|---|---|---|
@IBDesignable |
class |
使被修饰的类可以通过Storyboard设置 |
@IBInspectable |
属性 | 使被修饰的属性可以在Storyboard中设置 |
- 在
Project中创建新target(自定义需要在单独的target中才能被Storyboard管理)
- 在新创建的
target中创建自定义控件的类(@IBDesignable),类中可以设置一些可在Storyboard设置的属性(@IBInspectable)
MyView.swift
1 | import UIKit |
- 在
Storyboard中添加一个View(控件),并设置关联的类
1.6 使用StoryBoard做ios UI界面跳转
1.6.1 用iOS Storyboard做界面跳转
说明:跳转到下一个
view并且能够返回
1.6.1.2 跳转到下一页

1.6.1.3 返回
说明:使用
IBAction结合dismissViewControllerAnimated方法,步骤如下
- 新建一个和第二个
view关联的类(UIViewController子类)- 结合
辅助窗口在第二个view controller做IBAction并在响应方法中调用dismissViewControllerAnimated
ImgViewController.swift
1 | import UIKit |
1.6.2 使用nib文件做iOS界面设计
说明:
Xcode4之后IB(Interface Builder)和Xcode才集成在一起。使用方式如下
创建
Cocoa class时勾选Alse create XIB File![]()
使用
presentModalViewController方法从Storyboard管理的view跳转到nib管理的view注意:传统使用的是
nib(而不是Storyboard)进行界面设计的。nib的操作方式和Storyboard中单个view类似。
ViewControllew.swift
1 | import UIKit |
MyViewController.swift
1 | import UIKit |
1.6.3 在iOS界面间传递数据
说明:本质上只是为和下一个
view绑定的controller设置一个属性。
扩展:也可以在后一个view通过parentViewController访问前一个view

ViewControllew.swift:设置信息
1 | import UIKit |
MyViewControllew.swift:展示信息
1 | import UIKit |
1.7 屏幕适配
变动:在
Xcode 7中,Editor(menu)->Pin消失了,该菜单项中原本有一些样式设计功能。
1.7.1 匹配父级容器
说明:就是让
目标容器以他的父级容器为参照系进行设置
扩展:控件UIImageVIew可以设置其中图片的铺排模式
1.7.2 分割父级容器
说明:指的是多个兄弟
view使用父级view的方式。
扩展:Xcode 7推出了一种新的方式stack view,来进行布局管理,可以将多个view作为一个组合进行操作。
技巧:stack view可以取代之前需要Horizontal Space(连个view之间的水平间距)的场景
1.7.2.1 左边固定,右边自适应
约束:设置以下约束
- 两个
View之间:Horizontal Spacing- 左边
View:leading、top- 右边
View:tailing、top

1.7.2.2 多个View按比例
说明:2个或更多个
View的宽度(或高度)按一定比例分割父级容器的剩余空间

1.7.3 复杂布局适配
说明:上部左右均分,下部占用剩余部分
![]()
![]()
底层
顶层
1.8 iOS平台常用传感器
CMMotionManager类
说明:管理传感器的类。
库:CoreMotion
1.8.1 iOS平台加速度传感器的使用方式
说明:可以获得三个方向上的加速度。
| CMMotionManager相关实例成员 | 类型 | 说明 |
|---|---|---|
| accelerometerAvailable | Bool | 加速器是否可用 |
| accelerometerUpdateInterval | NSTimeInterval | 每秒获取数据数(获取频率) |
| startAccelerometerUpdatesToQueue | func | 启动加速器 |
| stopAccelerometerUpdates | func | 停止加速器 |
注意:加速度传感器
启动后,应当在适当的时候停掉。
1 | import UIKit |
1.8.2 iOS平台陀螺仪的使用方式
| CMMotionManager相关实例成员 | 类型 | 说明 |
|---|---|---|
| gyroAvailable | Bool | 陀螺仪是否可用 |
| gyroUpdateInterval | NSTimeInterval | 每秒获取数据数(获取频率) |
| startGyroUpdatesToQueue | func | 开始读区陀螺仪数据 |
| stopGyroUpdates | func | 停止读取陀螺仪数据 |
1 | import UIKit |
1.8.3 iOS平台距离传感器的使用方式
说明:相关类
UIDeviceNSNotificationCenterUIDeviceProximityStateDidChangeNotification
1 | import UIKit |
1.8.4 iOS平台电源传感器的使用方式
说明:相关类
UIDeviceNSNotificationCenterUIDeviceProximityStateDidChangeNotification
1 | import UIKit |
1.8.5 iOS平台磁场传感器的使用方式
CLLocationManager类
| 相关实例成员 | 类型 | 说明 |
|---|---|---|
| delegate | Class(采纳CLLocationManagerDelegate协议) | 委托对象 |
| startUpdatingHeading | func | 开始侦测方位数据 |
1 | import UIKit |
1.8.6 使用磁场传感器制作指南针实例
1.9 多点触控
1.9.1 触摸事件处理
说明:触摸事件分4种,分别对应四种方法(
ViewController的成员方法)
| 方法 | 说明 |
|---|---|
| touchesBegin | 手指接触屏幕 |
| touchesCancel | 系统事件打断了触摸事件时 |
| touchesEnded | 手指离开屏幕 |
| touchesMoved | 手指在屏幕上滑动 |
1 | import UIKit |
1.9.2 处理多个触摸点
技巧:可以在模拟器中模拟多点触控,方式是鼠标在模拟器上滑动式按住
alt(option)键。
注意:程序默认不启动对多点触控的支持,需要在代码中设置开启多点触控。
1 | import UIKit |
1.9.3 缩放图片实例

ViewController.swift
1 | import UIKit |
1.10 常用其它功能
1.10.1 打开网页
说明:在
Safari中打开指定连接
相关类:UIApplication
ViewController.swift
1 | import UIKit |
1.10.2 常用打开操作(发邮件、打电话、发短信)
说明:和打开网页类似,只是使用的
URL协议不同
ViewController.swift
1 | import UIKit |
1.10.3 自定义打开协议
说明:可以通过自定一些
URL协议
案例:通过自定义的URL协议ime打开另一个App
1.10.3.1 注册协议的app
在
Info.list中设置一个URL Schemes
创建要被协议打开的
View(带有xib)
LabelViewController.swift
1 | import UIKit |
LabelViewController.xib
AppDelegate.swift:实现通过URL打开该App的构造函数
1 | import UIKit |
1.10.3.2 通过协议打开app

viewcontroller.swift
1 | import UIKit |
1.10.4 获取photo
ViewController.swift
1 |

















